package 多线程.Lambda表达式;

public class Test {
    public static void main(String[] args) {
//        NoParaNoRet noParaNoRet = () -> {
        //1.当重写的方法只有一行代码时，直接可以省略大括号
//            System.out.println("函数式编程：无参数无返回值");
//        };
        NoParaNoRet noParaNoRet = () -> System.out.println("函数式编程：无参数无返回值");
        noParaNoRet.test();

//        NoParaHasRet noParaHasRet = () ->{
        //2.当重写的方法只有一个返回值时，可以直接省略大括号和返回值，直接() -> 10;
//            int a = 10;
//            return a++;
//        };
        NoParaHasRet noParaHasRet = () -> 10;
        System.out.println(noParaHasRet.test());

        //3.省略了() 和  {} 和 参数类型
         HasParaNoRet hasParaNoRet = a -> {
            System.out.println(a);
        };
        hasParaNoRet.test(99);

        //方法体只有一行，花括号和人turn可以省略
//      4. HasParaHasRet hasParaHasRet = (a, b) -> {return a+b;};
        HasParaHasRet hasParaHasRet = (a, b) -> a+b;
        System.out.println(hasParaHasRet.test(10, 20));
    }
}

interface NoParaNoRet{
    void test();
}
interface NoParaHasRet{
    int test();
}
interface HasParaNoRet{
    void test(int a);
}
interface HasParaHasRet{
    int  test( int a ,int b);
}
